package com.example.d3_collection_list;

import java.util.LinkedList;

/**
 * 目标：掌握LinkedList集合的使用
 */
public class ListTest3 {
    public static void main(String[] args) {
        /*
        链表的特点1：查询慢,无论查询哪个数据都要从头开始找
        链表的特点2：链表的增加相对快
        LinkedList底层是基于双向列表实现的：特点查询慢增删相对快,但是对首位元素进行增删改差的速度是极快的
        双向列表常用于实现 队列 栈
         */
        // 1.创建一个队列 队列特点：先进先出,后进后出
        LinkedList<String> queue = new LinkedList<>();
        // 入队
        queue.addLast("第1号人");
        queue.addLast("第2号人");
        queue.addLast("第3号人");
        queue.addLast("第4号人");
        System.out.println(queue);
        // 出队
        System.out.println(queue.removeFirst());
        System.out.println(queue.removeFirst());
        System.out.println(queue.removeFirst());
        System.out.println(queue);

        System.out.println("--------------------------------------------------");

        // 2.创建一个栈对象 栈特点：先进后出,后进先出
        LinkedList<String> stack = new LinkedList<>();
        // 压栈(push)
        stack.push("第1颗子弹");
        stack.push("第2颗子弹");
        stack.push("第3颗子弹");
        stack.push("第4颗子弹");
        System.out.println(stack);
        // 出栈(pop)
        System.out.println(stack.pop());
        System.out.println(stack.pop());
        System.out.println(stack);
    }
}
